package shwp.servlets;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import shm.capaDatos.vo.UsuarioVO;
import shm.excepciones.BuscarEntidadException;
import shwp.modelo.BusinessDelegate;

public class ServletBase extends HttpServlet {
	private static final long serialVersionUID = 1L;
	protected String mensajeError;
	protected String mensajeExito;
	protected String mensajeAlerta;
	protected UsuarioVO usuarioLogueado;
	
    public ServletBase() {
        super();
    }
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	}
	
	protected void redirect(HttpServletRequest request, HttpServletResponse response, String url) throws ServletException, IOException {
		
		RequestDispatcher dispatcher = request.getRequestDispatcher(url);
		
		if(mensajeError != null) {
			request.getSession().setAttribute("mensajeError", mensajeError);
		} else if(mensajeExito != null) {
			request.getSession().setAttribute("mensajeExito", mensajeExito);
		} else if (mensajeAlerta != null) {
			request.getSession().setAttribute("mensajeAlerta", mensajeAlerta);
		}
		mensajeAlerta = null;
		mensajeError = null;
		mensajeExito = null;
		dispatcher.forward(request, response);
	}
	
	protected void limpiarMensajes(HttpServletRequest request) {
		mensajeAlerta = null;
		mensajeError = null;
		mensajeExito = null;
		request.getSession().removeAttribute("mensajeExito");
		request.getSession().removeAttribute("mensajeError");
		request.getSession().removeAttribute("mensajeAlerta");
	}
	
	protected void borrarVariablesSesion(HttpServletRequest request, String excepcion){
		request.getSession().removeAttribute("stakeholder");
		request.getSession().removeAttribute("paisDelegado");
		request.getSession().removeAttribute("provinciaDelegado");
		request.getSession().removeAttribute("provinciasPaisDelegado");
		request.getSession().removeAttribute("ciudadesProvinciaDelegado");
		request.getSession().removeAttribute("paisContacto");
		request.getSession().removeAttribute("provinciaContacto");
		request.getSession().removeAttribute("provinciasPais");
		request.getSession().removeAttribute("ciudadesProvincia");
		request.getSession().removeAttribute("nombreCategoriaStakeholderB");
		request.getSession().removeAttribute("nombreCategoriaStakeholderE");
		request.getSession().removeAttribute("telefono");
		request.getSession().removeAttribute("permiso");
		if(!excepcion.equals("Proyectos")){
			request.getSession().removeAttribute("proyecto");
			request.getSession().removeAttribute("nombreProyectoB");
			request.getSession().removeAttribute("nombreProyectoE");
			request.getSession().removeAttribute("proyectoEnModoVer");
			request.getSession().removeAttribute("categoriasStakeholderHuerfanas");
			request.getSession().removeAttribute("mensajeHuerfanas");
		}
		if(!excepcion.equals("Usuarios")){
			request.getSession().removeAttribute("usuario");
			request.getSession().removeAttribute("nombreUsuarioB");
			request.getSession().removeAttribute("nombreUsuarioE");
		}
		if(!excepcion.equals("TiposStakeholder")){
			request.getSession().removeAttribute("tipoStakeholder");
			request.getSession().removeAttribute("nombreTipoStakeholderB");
			request.getSession().removeAttribute("nombreTipoStakeholderE");
		}
	}
	
	protected void obtenerUsuarioLogueado(HttpServletRequest request){
		Integer usuarioLogueadoid = (Integer)request.getSession().getAttribute("idUsuarioLogueado");
		UsuarioVO usuarioB = new UsuarioVO(usuarioLogueadoid, null, null, null, null, null, null);
		this.usuarioLogueado = null;
		try {
			usuarioLogueado = BusinessDelegate.getInstancia().buscarUsuario(usuarioB, usuarioB);
		} catch (BuscarEntidadException e2) {
			mensajeError = "Se produjo un error al obtener el usuario logueado.";
		}
	}
}
